package thinking

object 动态混入高级 {
  def main(args: Array[String]): Unit = {
    println("xxx")

  }

  trait Operate5 {
    def insert(id: Int)
  }

  trait File3 extends Operate5 {
    /**
     * 说明：
     * 1。 如果在特质中重写/实现了一个父特质的抽象方法，但是同时又调用了 supper
     * 2。 这时我们的方法不是完全的实现，因此需要声明为abstract override
     * 3。 这时的supper。insert（id） 并不一定指向父类的方法，更有可能是类左侧混入的特质中已有的方法，这和累的动态混入特性是密切相关的
     */
    abstract override def insert(id: Int): Unit = {
      println("将数据保存到文件中。。。")
      super.insert(id)
    }
  }

}
